import axios from 'axios'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost', // 设置后端API的基础URL为80端口
  timeout: 300000 // 默认超时时间设置为5分钟
})

// 请求拦截器，自动带上token
service.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = 'Bearer ' + token
      console.log('请求已添加认证头:', 'Bearer ' + token)
    } else {
      console.log('请求未找到认证token')
    }
    console.log('发送请求:', config)
    return config
  },
  error => {
    console.error('请求拦截器错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器（可选）
service.interceptors.response.use(
  response => {
    console.log('收到响应:', response)
    // 检查是否返回了HTML登录页面而不是JSON响应
    if (response.headers['content-type'] && 
        response.headers['content-type'].includes('text/html') && 
        response.config.url.includes('/auth/login')) {
      // 清除可能存在的旧token
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
      return Promise.reject(new Error('登录接口返回了HTML页面而不是JSON响应'))
    }
    return response
  },
  error => {
    console.error('响应错误:', error)
    // 如果是401错误（未授权），清除token并跳转到登录页
    if (error.response && error.response.status === 401) {
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
      // 如果当前不在登录页，则跳转到登录页
      if (window.location.pathname !== '/login') {
        window.location.href = '/login'
      }
    }
    return Promise.reject(error)
  }
)

export default service